/**
 * 开始游戏脚本
 * 
 * 数据初始化
 * 微信登录操作
 * 从服务器获取基本数据
 */

var com = require('Common');

cc.Class({
  extends: cc.Component,

  properties: {
    startButton: cc.Node, // 开始游戏按钮
    shareButton: cc.Node, // 分享按钮
    bgmOn: cc.Node, // 背景音乐开
    bgmOff: cc.Node, // 背景音乐关
    moneyLabel: cc.Label, // 金币
  },

  onLoad() {
    this.init(); // 初始化
    this.handleBgm(); // 背景音乐

    // 如果是第一次玩(登录并获取基本数据)
    if (com.first_play) {
      this.getConfig();

      // 判断是否为微信小游戏,是则调用微信相关方法
      if (cc.sys.platform === cc.sys.WECHAT_GAME) {
        this.handleWechatAd();
        this.wechatLoging();
        this.wechatShare();
      } else {
        com.isWechatGame = false;
      }
    }

    if (com.isWechatGame) {
      // 发送消息给子域(让子域获取好友排行数据)
      wx.postMessage({
        key: 'getFriendData'
      });
    }
  },

  // 初始化操作
  init: function () {
    com.canRevive = true; // 重置复活
    cc.sys.localStorage.setItem("score", 0); // 初始化分数
    cc.sys.localStorage.setItem("coinNum", 0); // 初始化获取金币数
    cc.director.preloadScene("Game"); // 预加载游戏界面
    this.moneyLabel.string = com.money; // 设置金币显示

    // 开始按钮回调
    this.startButton.on("touchstart", function () {
      cc.director.loadScene("Game");
    }, this);

    // 分享按钮回调
    this.shareButton.on("touchstart", function () {
      wx.shareAppMessage({
        title: com.shareTitle,
        imageUrl: com.shareImgUrl
      })
    }, this);

  },

  // 服务器加载数据配置
  getConfig: function () {
    com.httpGets(com.url + 'accs/get_info/v/' + com.version, function (res) {
      res = JSON.parse(res);
      let data = res.data;
      console.log(data);
      com.bannerAdId = data.bannerAdId;
      com.videoAdId = data.videoAdId;
      com.gameOverSecond = data.gameOverSecond;
      com.moreAppId = data.moreAppId;
      com.shareTitle = data.shareTitle;
      com.shareImgUrl = data.shareImgUrl;
      com.coinRate = data.coinRate;
      com.hinderRate = data.hinderRate;
      com.share_flag = data.share_flag;
      com.stairDownSecond = data.stairDownSecond;
    });
  },

  // 背景音乐控制
  handleBgm: function () {
    var bgm = cc.find('Bgm').getComponent('bgm');

    if (com.bgm_play) {
      this.bgmOn.active = true;
      this.bgmOff.active = false;
      bgm.play();
    } else {
      this.bgmOn.active = false;
      this.bgmOff.active = true;
    }

    // 背景音乐开关按钮回调
    this.bgmOn.on("touchstart", function () {
      com.bgm_play = !com.bgm_play;
      this.bgmOff.active = !com.bgm_play;
      this.bgmOn.active = com.bgm_play;
      bgm.stop();
    }, this);
    this.bgmOff.on("touchstart", function () {
      com.bgm_play = !com.bgm_play;
      this.bgmOff.active = !com.bgm_play;
      this.bgmOn.active = com.bgm_play;
      bgm.play();
    }, this);
  },

  // 处理微信广告展示
  handleWechatAd: function () {
    var sdkV = wx.getSystemInfoSync().SDKVersion;
    if (com.compareVersion(sdkV, '2.0.4') === -1) {
      console.log('---版本号低于2.0.4,无法展示广告---');
      com.canShowAd = false;
    } else {
      console.log('---版本号高于2.0.4,正常展示广告---');
      com._createBannerAd(); // 创建banner广告
      com._showBannerAd(); // 显示banner广告
    }
  },

  // 微信分享相关
  wechatShare: function () {
    wx.showShareMenu(); // 开启右上角分享

    // 微信分享回调
    wx.onShareAppMessage(function () {
      return {
        title: com.shareTitle,
        imageUrl: com.shareImgUrl
      };
    });
  },

  // 微信登录操作
  wechatLoging: function () {
    var that = this;
    // 调用微信登录接口
    wx.login({
      success: function (res) {
        if (res.code) {
          wx.request({
            url: com.url + 'accs/login',
            method: 'POST',
            data: {
              version: com.version,
              gh_id: com.gh_id,
              code: res.code,
              id: com.userId
            },
            success: function (res) {
              // 设置数据
              var data = res.data.data;
              com.openid = data.openid;
              com.user_id = data.user_id;
              com.money = data.money;
              cc.sys.localStorage.setItem("max_score", data.max_score);
              // 显示金币数量
              that.moneyLabel.string = com.money;
            },
            fail: function (error) {
              console.log(error)
            },
          })
        } else {
          console.log('获取用户登录态失败！' + res.errMsg);
        }
      },
      fail: function (error) {
        console.log(error)
      },
    });
  },

});